package cn.core.coding.mapper;

import cn.core.coding.vo.DbTablesInfoVO;
import cn.core.coding.vo.MysqlDbTableColInfoVO;
import cn.core.coding.vo.MysqlDbTableInfoVO;
import cn.core.coding.vo.MysqlDbTablePkInfoVO;
import cn.core.coding.vo.OracleDbTableColInfoVO;
import cn.core.coding.vo.OracleDbTableInfoVO;
import cn.core.coding.vo.OracleDbTablePkInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Collection;

@Mapper
public interface CodingMapper {

  /**
   * 获取mysql数据库表信息 通过数据库名和表名
   */
  public Collection<MysqlDbTableInfoVO> getMysqlDbTableInfoByDbNameAndTableName(@Param("dbName") String dbName, @Param("tableName") String tableName) throws Exception;

  /**
   * 获取mysql数据库表列信息 通过数据库名和表名
   */
  public Collection<MysqlDbTableColInfoVO> getMysqlDbTableColInfoByDbNameAndTableName(@Param("dbName") String dbName, @Param("tableName") String tableName) throws Exception;

  /**
   * 获取mysql数据库表主键信息 通过数据库名和表名
   */
  public Collection<MysqlDbTablePkInfoVO> getMysqlDbTablePkInfoByDbNameAndTableName(@Param("dbName") String dbName, @Param("tableName") String tableName) throws Exception;

  /**
   * 获取mysql数据库所有表信息 通过数据库名
   */
  public Collection<DbTablesInfoVO> getMysqlDbAllTablesInfoByDbName(@Param("dbName") String dbName) throws Exception;

  /**
   * 获取oracle数据库所有表信息 通过数据库名
   */
  public Collection<DbTablesInfoVO> getOracleDbAllTablesInfo() throws Exception;

  /**
   * 获取oracle数据库表信息 通过表名
   */
  public Collection<OracleDbTableInfoVO> getOracleDbTableInfoByTableName(@Param("tableName") String tableName) throws Exception;

  /**
   * 获取oracle数据库表列信息 通过表名
   */
  public Collection<OracleDbTableColInfoVO> getOracleDbTableColInfoByTableName(@Param("tableName") String tableName) throws Exception;

  /**
   * 获取oracle数据库表主键约束名称 通过表名
   */
  public Collection<String> getOracleDbTablePrimaryKeyConstraintNameByTableName(@Param("tableName") String tableName) throws Exception;

  /**
   * 获取oracle数据库表主键信息 通过表名和主键约束名称
   */
  public Collection<OracleDbTablePkInfoVO> getOracleDbTablePkInfoByTableNameAndPrimaryKeyConstraintName(@Param("tableName") String tableName, @Param("primaryKeyConstraintName") String primaryKeyConstraintName) throws Exception;
  
}